home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-13 | 48.6 KB | 1,478 lines | [TEXT/R*ch] |
- Archive-name: eiffel-faq
- Posting-Frequency: approximately monthly
- Last-modified: 04 Apr 1997
-
- EIFFEL: FREQUENTLY ASKED QUESTIONS
- ----------------------------------
-
- This question-and-answer list is posted monthly to the Usenet
- newsgroups comp.lang.eiffel, comp.answers and news.answers.
-
- Please send corrections, additions and comments to Conrad Taylor
- (cwtaylor@tasc.com).
-
- This information is abstracted and condensed from the posts of many
- contributors to comp.lang.eiffel, supplemented by information from
- vendors. No guarantees are made regarding its accuracy.
-
- This compilation is by Conrad Taylor. Distribution over the Internet or
- by electronic mail is unrestricted. Other use requires my permission.
-
- You can receive the latest copy by anonymous file transfer from:
-
- ftp://ftp.cm.cf.ac.uk/pub/eiffel/eiffel-faq
- ftp://rtfm.mit.edu/pub/usenet/news.answers/eiffel-faq
-
- or by sending an email message to mail-server@rtfm.mit.edu with this
- message body:
-
- send /pub/usenet/news.answers/eiffel-faq
-
- ----------
-
- CONTENTS
-
- Changes since the last posting:
-
- What's New:
-
- N01) Announce Visual Eiffel for Windows 95/NT
- N02) ISE Eiffel 4 for Windows
- N03) The long awaited "Object Oriented Software Construction 2ed" by
- Bertrand Meyer
-
- Frequently Asked Questions:
-
- Q01) What is Eiffel?
- Q02) Where did Eiffel come from?
- Q03) What Eiffel products are available?
- Q04) Is Eiffel available for free or as shareware?
- Q05) Is there an archive of the comp.lang.eiffel newsgroup?
- Q06) What is Sather? How does it compare to Eiffel?
- Q07) What books are available for learning about Eiffel?
- Q08) Are any magazines or newsletters available concerning Eiffel?
- Q09) Where can I find Eiffel on the World-Wide-Web?
- Q10) Where can I get an Eiffel editor or emacs-mode?
- Q11) What is BON?
- Q12) How large are typical Eiffel executables?
- Q13) Are there standards for the Eiffel language?
- Q14) How fast do Eiffel applications run?
- Q15) Are there any Eiffel user groups?
- Q16) Where can I get Eiffel products and services?
- Q17) Are there any conferences for Eiffel users?
- Q18) Why do most Eiffel implementations compile to C?
-
- Language Issues:
-
- L01) What features does Eiffel have?
- L02) What changes have been made to the Eiffel language definition?
- L03) What libraries come with Eiffel?
- L04) What's the big deal about preconditions and postconditions?
- L05) Please explain and discuss covariance vs. contravariance.
- L06) Is it true that there are "holes" in the Eiffel type system?
- L07) Is there support for concurrency in Eiffel?
- L08) Why doesn't Eiffel allow function overloading?
- L09) Why are there no procedural types in Eiffel?
- L10) Why are there no class attributes in Eiffel?
- L11) How can I call the parent-class version of a redefined
- routine?
- L12) Where can I find a comparison between Eiffel and C++?
- L13) Are there any destructors in Eiffel?
-
- N01) Announce Visual Eiffel for Windows 95/NT
-
- The Visual Eiffel for Windows 95/NT is current available for downloading
- for a limited evaluation from http://www.eiffel.com. If you have any
- questions, please send e-mail to info@eiffel.com or call (805)
- 685-1006.
-
- ----------
-
- N02) ISE Eiffel 4 for Windows
-
- Here it is! ISE Eiffel 4 for Windows is now available for downloading.
- Just get it from our site or one of the mirrors, try it for free. You'll
- love it!
-
- What you will get
-
- ISE Eiffel 4 is the latest in the acclaimed ISE Eiffel product line.
- In the downloadable Windows version you will get:
-
- o The acclaimed EiffelBench environment for fast incremental
- recompilation (melting), C code generation, finalization of optimized
- executables, graphical browsing, automatic documentation tools
- (including generation of HTML, RTF, MML and other formats), debugging,
- object inspection etc.
-
- o Extensive on-line documentation.
-
- o Extensive reusable libraries (several hundred classes!): EiffelBase,
- the most thoroughly designed library covering fundamental structures
- of software engineering, from stacks and queues to files and
- iterators; WEL, the Windows Eiffel Library, for building robust
- graphical applications taking full advantage of the Windows API.
- These libraries come precompiled.
-
- o C and C++ interface.
-
- o The Eiffel Resource Bench: generate a Windows graphical application,
- using WEL, from a resource file produced by a Windows GUI builder such
- as Microsoft Developer's Studio.
-
- If you have any questions, please send e-mail to info@eiffel.com or
- call (805) 685-1006.
-
- ----------
-
- N03) The long awaited "Object Oriented Software Construction 2ed" by
- Bertrand Meyer
-
- Overview
-
- Object-Oriented Software Construction, second edition is the
- comprehensive reference on all aspects of object technology, from
- design principles to O-O techniques, Design by Contract, O-O
- analysis, concurrency, persistence, abstract data types and many
- more. Written by a pioneer in the field, contains an in-depth analysis
- of both methodological and technical issues.
-
- Comes with a CD-ROM containing: the complete hyperlinked text,
- for easy reference; software to read the text on major industry
- platforms; supplementary material (reusable components,
- mathematical complements); and a complete graphical O-O
- development environment supporting the concepts of the book.
-
- Ordering Information
-
- Title: Object-Oriented Software Construction, second edition, 1997, 1300
- pp.
- Author: Bertrand Meyer, ISE Inc., Santa Barbara, CA
- ISBN: SBN 0-13-629155-4
-
- Contacting ISE
-
- WWW Site: http://www.eiffel.com
- E-mail: info@eiffel.com
- Phone: (805) 685-1006
-
- ----------
-
- Q01) What is Eiffel?
-
- Eiffel is an advanced object-oriented programming language that
- emphasizes the design and construction of high-quality and reusable
- software.
-
- Eiffel is not a superset or extension of any other language. Eiffel
- strongly encourages OO programming and does not allow dangerous
- practices from previous generation languages although it does
- interface to other languages such as C and C++. Eiffel supports the
- concept of "Design by Contract" to improve software correctness.
-
- Beyond the language aspect Eiffel may be viewed as a method of
- software construction. Eiffel is an excellent vehicle for software
- education, including for a first programming course.
-
- ----------
-
- Q02) Where did Eiffel come from?
-
- Eiffel was created by Bertrand Meyer and developed by his company,
- Interactive Software Engineering (ISE) of Goleta, CA.
-
- Dr. Meyer borrowed on his extensive experience with OOP, particularly
- with Simula. He also added in important concepts from his academic
- work on software verification and computer language definition.
-
- Eiffel's design addresses many practical concerns that software
- engineers face when creating complex software. Eiffel has evolved
- continually since its conception on September 14, 1985 and its first
- introduction in 1986.
-
- Eiffel is named after Gustave Eiffel, the engineer who designed the
- Eiffel Tower.
-
- ----------
-
- Q03) What Eiffel products are available?
-
- Commercial Eiffel compilers, libraries and tools are available from
- the following vendors and their resellers:
-
- Interactive Software Engineering Inc (ISE Eiffel)
- Tower Technology Corporation (TowerEiffel)
- SIG Computer GmbH (Eiffel/S)
- Jan Willamowius (Eiffel adaption of SNiFF+ Programming Environment)
-
- The following platforms are supported by one or more of the above
- vendors:
-
- PC: DOS, OS/2, Windows 3.1, Windows 95, Windows NT, PC Unix
- (Interactive, SCO, and ESIX), Nextstep, Linux
- OTHER HARDWARE: Sparc (SunOS & Solaris), NeXTStep, HP9000, DEC 5xxx,
- Sony News, DG Aviion, DEC Alpha OSF-1, DEC OpenVMS, RS6000,
- Pyramid, QNX, Silicon Graphics, Macintosh (Motorola & PowerPC)
-
- Special offers are available on many of these products for personal or
- educational use.
-
- Further information about these products is available from the vendors
- by email and on the world-wide-web.
-
- See Q16 for contact details and websites.
-
- ----------
-
- Q04) Is Eiffel available for free or as shareware?
-
- All of Eiffel - All graphical - All for free!
-
- FREE EIFFEL FOR WINDOWS is a free version of ISE's acclaimed Melting Ice
- Technology compiler and environment for Eiffel. No strings attached --
- it's
- FREE!
-
- FREE EIFFEL FOR WINDOWS is now fully graphical, showing the power
- of
- the EiffelBench set of advanced development tools for fast
- compilation, documentation, browsing, debugging and much more!
-
- The earlier text-based environment is still available, but we
- think
- you'll want to try the graphical environment right away!
-
- Technical support for FREE EIFFEL FOR WINDOWS is available. Details are
- included in the delivery, or contact us.
-
- Also of interest
-
- Upgrade to Personal or Professional Eiffel for Windows for an unbeatable
- price and get printed documentation, more tools, more libraries, support
- and
- more.
-
- Also note our highly affordable ISE Eiffel for Linux , supporting the
- entire
- set of ISE Eiffel mechanisms for the fastest growing version of Unix.
- And of
- course ISE Eiffel is available for the major platforms in the industry,
- from
- Unix to VMS with more to come.
-
- Getting familiar with the environment
-
- On-line documentation is included in the delivery. But please do us a
- favor:
- if you are new to ISE Eiffel, please take a few minutes (now or later,
- but
- before you start using the environment) to consult the on-line
- introduction
- to EiffelBench. The powerful interaction techniques of ISE Eiffel are
- innovative and have been known to startle newcomers. We are sure you
- will
- love them, but first you must read about the essential ideas.
-
- Downloading FREE EIFFEL 4.0 FOR WINDOWS
-
- Note: if you want the graphical version (who doesn't?) do NOT download
- it
- from SimTel or any of the other sites. At the moment only ISE's site has
- FREE GRAPHICAL EIFFEL FOR WINDOWS.
-
- Be sure to choose the version for the appropriate variant of Windows, as
- listed below: Windows 95, Windows NT or Windows 3.1. The Windows 3.1
- version
- will NOT work under 95 or NT.
-
- To download the FREE GRAPHICAL EIFFEL FOR WINDOWS, go to the ISE Web
- Site:
-
- From the WWW: http://www.eiffel.com
- Directly from FTP: ftp.eiffel.com
-
- SIG Computer's "Eiffel/S 1.3s" is a shareware version of their Eiffel
- compiler for DOS and Unix and is available by FTP from SimTel mirror
- sites in SimTel/msdos/eiffel, or from the UWCC archive
- at
-
- ftp//ftp.cm.cf.ac.uk/pub/Eiffel/SIG/Eiffel-S-1.3/
-
- The EON Eiffel compiler is shareware under MS-DOS and Linux, and a
- beta-test version is available from
-
- ftp://ftp.demon.co.uk/pub/eiffel/eon-eiffel/
-
- SmallEiffel is a free Eiffel compiler distributed under the terms of
- the GNU General Public License as published by the Free Software
- Foundation. You can download SmallEiffel at
-
- ftp://ftp.loria.fr/pub/loria/genielog/SmallEiffel
-
- The following Eiffel archive sites allow anonymous file transfer:
-
- ftp://ftp.tu-clausthal.de/pub/atari/languages/eiffel/vici_102.lzh
- The Atari ST interpreter referred to above.
-
- ftp://ftp.cm.cf.ac.uk/pub/eiffel
- University of Wales. Contains the latest version of this FAQ, plus
- the front-end parser (ep) and various public domain classes. To
- contribute, contact Ted Lawson (ted@cm.cf.ac.uk).
-
- ftp://ftp.fu-berlin.de/pub/unix/languages/heron
- This is an Eiffel front-end parser (HERON) in the public domain,
- created by Burghardt Groeber and Olaf Langmack of the Freie
- Universitaet in Berlin.
-
- ftp://ftp.informatik.uni-stuttgart.de/pub/eiffel
- Falkultaet Informatik der Universitaet Stuttgart, Germany. Contains
- a compiler generator, several encapsulations, a pretty-printer for
- Eiffel/S, and some utility classes. To contribute, contact Joerg
- Schulz (schulz@adam.informatik.uni-stuttgart.de).
-
- ftp://utarlg.uta.edu/CSE/EIFFEL
- UT-Arlington, USA. Contains some code from Eiffel Outlook back
- issues.
-
- SIG Computer produces a CD-ROM containing most of the available
- freeware, shareware and public domain Eiffel material.
-
- ----------
-
- Q05) Is there an archive of the comp.lang.eiffel newsgroup?
-
- Yes, at the following FTP sites:
-
- ftp://wuarchive.wustl.edu/usenet/comp.lang.eiffel/
-
- and on the WWW at http://www.cm.cf.ac.uk/CLE/
-
- ----------
-
- Q06) What is Sather? How does it compare to Eiffel?
-
- Sather is an OO language, originally patterned after Eiffel but now
- very different, created at ICSI of Berkeley, CA.
-
- Sather does not support Design by Contract, but has some other
- interesting features. See the usenet newsgroup comp.lang.sather.
-
- ----------
-
- Q07) What books are available for learning about Eiffel?
-
- The classic text for learning about Eiffel (and OO programming in
- general) is Dr. Meyer's "Object Oriented Software Construction".
- Although the language has evolved significantly since the book was
- published, the presentation of the basic problems and solutions which
- motivate the OO mind set are still quite compelling. This is the book
- to get if you are new to the object-oriented world (Prentice Hall,
- ISBN 13-629031-0). Available in French as "Conception et Programmation
- par Objets" (90/10 InterEditions, ISBN 2-7296-0272-0) and in German as
- "Objektorientierte Softwareentwicklung (Hanser, ISBN 3-446-15773-5).
-
- Also by Dr. Meyer, "Eiffel: The Language", combines an introduction to
- Eiffel, the language reference, and a good deal of philosophy into its
- 600 pages. This is a rigorous and comprehensive book which some
- readers may find heavy going despite Dr. Meyer's clarity of
- expression. It is the definitive language reference, and essential
- reading for all serious Eiffel users. Get the second or later printing
- (same ISBN), which includes many corrections and changes (there is not
- a second edition, and none is currently underway) (Prentice Hall, ISBN
- 13-247925-7). Available in French as "Eiffel, le langage" (94/10
- InterEditions, ISBN 2-7296-0525-8).
-
- Dr. Meyer and Jean-Marc Nerson have edited "Object-Oriented
- Applications". It includes an introduction to Eiffel technology
- followed by seven in-depth descriptions of large applications written
- in Eiffel. (Prentice Hall, ISBN 13-013798-7)
-
- Robert Switzer has written "Eiffel: An Introduction". This is a very
- clear and concise Eiffel primer, with many code fragments and two
- substantial Eiffel applications. (Prentice Hall, ISBN 13-105909-2).
- Available in French as "Introduction a Eiffel" (Masson, ISBN
- 2-225-84-656-1)
-
- ISE distributes a set of 6 video lectures entitled "Object-Oriented
- Software Construction", taught by Bertrand Meyer. These provide an
- overall introduction to the method and use ISE Eiffel 3 to illustrate
- the concepts.
-
- Frieder Monninger's book "Eiffel: Objektorientiertes Programmieren in
- der Praxis" is a very down-to-earth Eiffel handbook in German. (Heise,
- ISBN 3-88229-028-5).
-
- Bertrand Meyer's "Reusable Software: The Base Object-Oriented
- Component Libraries" (Prentice Hall, ISBN 0-13-245499-8, about 530
- pages) describes principles of library design and the taxonomy of
- fundamental computing structures. Serves as a manual for the
- EiffelBase libraries.
-
- Bertrand Meyer's "An Object-Oriented Environment: Principles and
- Application" (Prentice Hall, ISBN 0-13-245507-2, 240 pages) describes
- the ISE EiffelBench environment as well as the "Melting Ice"
- compilation technology and the EiffelBuild GUI application builder.
-
- Richard Wiener's "Software Development Using Eiffel: There can be life
- other than C++" (Prentice-Hall, ISBN 0-13-100686-X) is a useful book
- (full of serious code samples) for those with a grounding in another
- OO language.
-
- A book by Kim Walden and Jean-Marc Nerson, "Seamless Object-Oriented
- Software Architecture: Analysis and Design of Reliable Systems",
- describes the BON method in detail (Prentice Hall, ISBN
- 0-13-031303-3).
-
- Pete Thomas and Ray Weedon's "OO Programming in Eiffel" is a very
- comprehensive Eiffel tutorial and textbook, with a solid "Abstract
- Data Type" approach (Addison-Wesley, ISBN 0-201-59387-4).
-
- Another book called "OO Programming in Eiffel" is by Robert Rist and
- Robert Terwilliger, and is a textbook with an emphasis on design.
- (Prentice-Hall, ISBN 0-13-205931-2).
-
- Bertrand Meyer's "Object Success" is a manager's guide to object
- orientation, its impact on the corporation and its use for
- re-engineering the software process (Prentice-Hall, ISBN
- 0-13-192833-3).
-
- Macmillan publishes John Tyrrell's inexpensive and very approachable
- textbook "Eiffel Object-Oriented Programming" (ISBN 0-333-64554-5).
-
- "Object-Oriented Software Engineering with Eiffel"
- By Jean-Marc Jezequel, Addison-Wesley Eiffel in Practice Series
- ISBN 0-201-63381-7 * Paperback * 368 pages * ) 1996
-
- "Object Technology for Scientific Computing Object-Oriented Numerical
- Software
- in Eiffel and C" by Paul Dubois, (Prentice Hall and its editor for the
- Object
- Oriented Series, (ISBN 0-13-267808-X * paper * 350 pages * Accompanying
- CD with
- the Free Eiffel for UNIX & Linux environments)
-
- There is also a white paper titled 'Eiffel: A Manager's Perspective'
- which provides a quick introduction to Eiffel and the benefits it
- brings to the software development process. For a free copy, send your
- name and postal address to tower@twr.com
-
- ----------
-
- Q08) Are any magazines or newsletters available concerning Eiffel?
-
- Eiffel Outlook is a bi-monthly journal devoted to Eiffel, published
- since 1991. Topics cover all areas of interest to the Eiffel
- community.
-
- Subscriptions, trial subscriptions and back issues are available from:
-
- SIG Computer in Germany
- Everything Eiffel in the UK & France
- Simon Parker in Ireland
- IMSL in Japan
- Enea Data in Sweden
- Tower Technology in the USA and all other countries
-
- Details are available at <http://www.cm.cf.ac.uk/Tower/Outlook.html>
- or by sending email to <outlook@twr.com>.
-
- ISE produces a newsletter "Eiffel World". Subscriptions are free
- (email your request to info@eiffel.com). Individual copies are
- available from:
-
- Cybertech in Argentina
- Class Technology in Australia
- Jay-Kell Technologies in Canada
- SOL in France
- SIG Computer in Germany
- Eiffel Ireland in Ireland
- Etnoteam in Italy
- Information & Math Science Lab
- Software Research Associates in Japan
- Chromasoft in Mexico
- Science OO Products & Systems in the Netherlands
- Objective Methods in New Zealand
- Ruperez & Associates in Spain
- Enea Data in Sweden
- Abstraction in Switzerland
- Everything Eiffel in the UK
-
- Also, EiffelWorld is now available on-line! This is your first
- quarterly reminder to visit the EiffelWorld Online magazine at
-
- http://www.eiffel.com/doc/eiffelworld/5.2
-
- If you're interested in Software Design Patterns you may like to
- subscribe to the Eiffel Patterns mailing list. Send email to:
-
- e-patterns-request@cbr.dit.csiro.au
-
- ----------
-
- Q09) Where can I find Eiffel on the World-Wide-Web?
-
- An Eiffel home page is held on the University of Wales College of
- Cardiff's server at http://www.cm.cf.ac.uk/CLE/. Vendor websites are
- listed in Q16.
-
- ----------
-
- Q10) Where can I get an Eiffel editor or emacs-mode?
-
- Franck Arnaud's Eiffel extension to the Windows/WindowsNT programmers
- editor Codewright from Premia allows you to see Eiffel code in colour,
- has smart indenting and a few templates. Available by anonymous FTP
- from ftp://ftp.cm.cf.ac.uk/pub/eiffel/tools/cweiffel.zip
-
- The WINEDIT shareware programmer's editor offers colour syntax
- highlighting, works with Eiffel/S under MS-Windows, and is available
- from:
- ftp://src.doc.ic.ac.uk/computing/systems/ibmpc/windows3/programr/we-30d.zip
- and ftp://gatekeeper.dec.com/.f/micro/msdos/win3/programr/we-30d.zip
-
- Alan Philips' free Programmers File Editor also works with Eiffel/S
- under MS-Windows, has templates but not syntax highlighting, available
- from ftp://ftp.demon.co.uk/pub/ibmpc/windows/editors/pfe0507.zip
-
- Tower Technology Corporation supplies an Eiffel 3 emacs mode that
- supports syntax-directed highlighting, auto-indentation and is easily
- customized for font use, color and indentation amounts. It comes as
- part of the TowerEiffel system, but is also available free for anyone
- who requests it. Send email to elisp@atlanta.twr.com to get the latest
- version.
-
- ----------
-
- Q11) What is BON?
-
- BON ("Business Object Notation") is a method for high-level analysis
- and design, offering a seamless reversible transition to an Eiffel
- implementation. The method emphasizes Design by Contract and
- systematic development.
-
- ISE supports BON with its EiffelCASE tool.
-
- ----------
-
- Q12) How large are typical Eiffel executables?
-
- (How large are typical C executables?)
-
- In general, the size of an executable depends on the compiler used.
- Thus, a good Eiffel compiler would produce good C code by removing
- dead code such that a C executable is not smaller than an Eiffel
- executable. This is true of SmallEiffel and ISE Eiffel compilers.
- Also, I think this is similar for others like Tower Eiffel and SIG
- Eiffel compilers.
-
- Interestingly, Eiffel applications seem to grow less rapidly as new
- capabilities are added. Reuse does help out tremendously in this
- regard. A good Eiffel compiler allows large applications to be smaller
- than equally functional applications written in C.
-
- Note that leaving assertion checking in the code increases the size of
- applications a lot. Despite this, many of us prefer that they remain
- throughout development. Some even deliver a PRECONDITIONS-only version
- of their applications to their early customers.
-
- ----------
-
- Q13) Are there standards for the Eiffel language?
-
- The definition of the Eiffel language is in the public domain. This
- definition is controlled by NICE, the Non-profit International
- Consortium for Eiffel. This means that anyone or any company may
- create a compiler, interpreter, or whatever having to do with Eiffel.
- NICE reserves the right to validate that any such tool conforms to the
- current definition of the Eiffel language before it can be distributed
- with the Eiffel trademark. (i.e. advertised as an "Eiffel" compiler.)
-
- The Eiffel trademark is owned and controlled by NICE. NICE is using
- Bertrand Meyer's book, "Eiffel: The Language" (2nd Printing), as the
- initial definition of the language.
-
- The NICE board of directors for 1995 consists of Christine Mingins
- (chair), Bertrand Meyer (treasurer), Simon Parker (secretary) and Paul
- Johnson.
-
- In June 1995 NICE published the first version (called "Vintage 95") of
- the Eiffel Library Standard. Those parts of an Eiffel application that
- use only the standard classes and features should run with minimal
- change on any compiler supporting ELS-95.
-
- NICE (Nonprofit International Consortium for Eiffel)
- 45 Hazelwood
- Shankill
- Co Dublin
- Republic of Ireland
- TEL: +353 1 282 3487
- email: nice@atlanta.twr.com
-
- ----------
-
- Q14) How fast do Eiffel applications run?
-
- Early versions of Eiffel were slow. Recent implementations have
- improved dramatically. However, to achieve maximum performance under
- any Eiffel implementation, run-time assertion monitoring must be
- switched off. (But see Q12 on when to switch assertions on or off.)
-
- It's hard to generalise, but compared to C++, simple
- computation-intensive applications will run perhaps 15% slower. Large
- applications are often dominated by memory management rather than
- computation. ISE recently demonstrated that by simply adding a call to
- the garbage collector's "full-collect" routine at a time when there
- were known to be few live objects, performance became dramatically
- faster than a corresponding C++ version.
-
- ----------
-
- Q15) Are there any Eiffel user groups?
-
- International Eiffel User Group
- Darcy Harrison - Attention: IEUG
- ISE Inc.
- 270 Storke Road, Suite 7
- Goleta, CA 93117, USA
- TEL (805) 685-1006
- FAX (805) 685-6869
- darcyh@eiffel.com
-
- UK & Ireland Eiffel Interest Group (currently inactive)
-
- GUE, Groupe des Utilisateurs Eiffel (France)
- Jean-Marc Nerson
- 104 rue Castagnary, 75015 Paris
- TEL +33 1 45 32 58 80
- FAX +33 1 44 32 58 81
- marc@eiffel.fr
- (meets every 2 months or so)
-
- TowerEiffel User's Group
- Private cyberspace mailing list for supported Tower customers with
- meetings coinciding with major OO Conferences and Events.
-
- ----------
-
- Q16) Where can I get Eiffel products and services?
-
- These vendors, resellers and suppliers of Eiffel training and
- consultancy are listed in alphabetical order:
-
- Argentina
-
- Cybertech
- Systens Integration for CIM
- Suarez 1281, Third Floor,Apt.A
- CP-1288 Buenos Aires
- TEL +54 1 28 1950
- FAX +54 1 322 1071 or 963 0070
-
-
- Australia
-
- Class Technology Pty. Ltd.
- PO Box 6274
- North Sydney NSW 2060
- TEL +61 2 9922 7222
- FAX +61 2 9922 7703
- email eiffel@class.com.au
- http://www.class.com.au/
-
-
- Canada
-
- Jay-Kell Technologies, Inc.
- 48 Lakeshore Road, Suite #1
- Pointe Claire, Quebec
- Canada H9S 4H4
- TEL +51 4 630 1005
- FAX +51 4 630 1456
-
-
- France
-
- SOL
- 104 rue Castagnary
- 75015 Paris
- TEL +33 1 45 32 58 80
- FAX +33 1 45 32 58 81
- email eiffel@eiffel.fr
-
-
- Germany
-
- Feinarbeit
- Altenbraker Strasse 4
- D-12053 Berlin
- TEL +49 30 6215827
- FAX +49 30 6215863
- email langmack@netmbx.netmbx.de
-
- SIG Computer GmbH
- Zu den Bettern 4
- D 35619 Braunfels, Germany
- TEL +49 6472 2096
- FAX +49 6472 7213
- email eiffel@eiffel.de
- www http://www.sigco.com/
-
- Jan Willamowius
- Semperstr. 1
- D-22303 Hamburg
- Hamburg, Germany
- Tel: +49 40-2806209
- Email: jan@janhh.shnet.org
- WWW: http://swt1.informatik.uni-hamburg.de/~1willamo/dl.html
-
- Halstenbach ACT GmbH
- Dr. Joachim Wolffram
- Breidenbrucher Strasse 2
- D-51674 Wiehl-Bomig
- Tel.: +49 2261 9902-0
- email: info@halstenbach.de
- WWW: http://www.halstenbach.de
-
-
- Ireland
-
- Eiffel Ireland
- 45 Hazelwood
- Shankill
- Co Dublin
- TEL +353 1 282 3487
- email sparker@eiffel.ie
- www http://www.eiffel.ie/Eiffel/
-
-
- India
-
- Sritech Information Technology
- 744/51 2nd Floor
- 10 Mian Road, 4th Block
- Jayanagar, Bangalore, India 560011
- TEL +91 812 640661
- FAX +91 812 643608
-
-
- Italy
-
- EtnoTeam
- Via Adelaide Bono Cairoli 34
- 20217 Milano
- TEL +39 2 261621
- FAX +39 2 26110755
- email sales@etnomi.it
-
-
- Japan
-
- Information and Math Science Lab Inc.
- 2-43-1, Ikebukuro, Toshima-ku
- Tokyo 171
- email fushimi@idas.imslab.co.jp
- TEL +81 3 3590 5211
- FAX +81 3 3590 5353
-
- Software Research Associates
- 1-1-1 Hirakawo-Cho
- Chiyoda-ku Tokyo 102
- TEL +81 3 3234 8789
- FAX +81 3 3262 9719
- email sugita@sra.co.jp
-
-
- Mexico
-
- Cromasoft SA de CV
- Mazatlan 161
- Col Condesa, 06140 Mexico
- TEL +52 5 286 82 13
- FAX +52 5 286 80 57
- email claudio@croma.sunmexico.sun.com
-
-
- The Netherlands
-
- SOOPS
- Sarphatistraat 133
- NL-1018 GC Amsterdam, The Netherlands
- TEL +31 20 525 6644
- FAX +31 20 624 6392
- email A731CISK@HASARA11.BITNET
-
-
- New Zealand
-
- Objective Methods Ltd
- PO Box 17356 (77 Chamberlain Rd)
- Karori, Wellington, New Zealand
- TEL +64 4 476 9499
- FAX +64 4 476 9237 or 8772
- email dkenny@swell.actrix.gen.nz
-
-
- Russia
- SIG Computer, Germany has a branch office in Moscow.
- email eiffel@sigcomp.msk.su
-
-
- Spain
-
- Eiffel Iberica
- Aptdo 1646
- 20080 San Sebastian
- TEL +34 943 471906
- email ean@sc.ehu.es
-
- Ruperez & Associates
- c/San Bartolome 21, 5F
- 20001 San Sebastian
- TEL +34 43 461801
- email jipferur@si.ehu.es
-
-
- Sweden
-
- Enea Data
- Box 232, Nytorpsvagen 5
- S-183 23 Taby
- TEL +46 8 792 25 00
- FAX +46 8 768 43 88
- email eiffel@enea.se
-
-
- Switzerland
-
- Abstraction
- 18 Faubourg de l'Hopital
- 2000 Neuchatel
- TEL +41.38.25.04.93
- FAX +41.38.259.857
- email silberstein@clients.switch.ch
-
- Objectif Concept
- Passage Cour-Robert 5
- CH 1700 Fribourg
- TEL +41 37 232977
- FAX +41 37 464889
-
-
- United Kingdom
-
- Eon Software
- 19 Stapleton Road
- Heddington, Oxford OX3 7LX
- TEL +44 865 741452
- email ian@eonsw.demon.co.uk
-
- Everything Eiffel
- 6 Bambers Walk
- Wesham PR4 3DG
- England
- TEL & FAX +44 1772 687525
- email rogerb@eiffel.demon.co.uk
-
-
- United States of America
-
- Interactive Software Engineering, Inc
- 270 Storke Road, Suite 7
- Goleta, CA 93117
- TEL 805-685-1006
- FAX 805-685-6869
- email info@eiffel.com
- www http://www.eiffel.com/
-
- Tower Technology Corporation
- 1501 Koenig Lane
- Austin, TX 78756 USA
- TEL 512-452-9455
- FAX 512-452-1721
- email: tower@twr.com
- www http://www.twr.com/
-
- ZumaSoft
- 6235 Paseo Canyon Drive
- Malibu, California 90265, USA
- TEL & FAX +1 310 457-6263
- email tstevens@netcom.com
-
- ----------
-
- Q17) Are there any conferences for Eiffel users?
-
- The conferences listed here are not just for Eiffel. Eiffel shares the
- spotlight with other OO languages including C++ and Smalltalk.
-
- Feb 26 - 29 1996
- TOOLS Europe, Paris France
-
- Jul 29 - Aug 2 1996
- TOOLS USA, Santa Barbara California
-
- TOOLS is the major international conference devoted to the
- applications of OO technology. Other events, such as Eiffel User Group
- meetings or NICE meetings are often held in conjunction with TOOLS.
-
- TOOLS Conferences
- PO Box 6863, Santa Barbara, CA 93160, USA
- TEL (805) 685 1006, FAX (805) 685 6869
- email tools@tools.com
-
- ----------
-
- Q18) Why do most Eiffel implementations compile to C?
-
- By using C as a target language, an Eiffel implementor can:
-
- - bring Eiffel to the marketplace faster and at lower cost
- - port their implementation more easily to other platforms
- - take advantage of optimisation provided by the C compiler
-
- Much of the technology that makes Eiffel relatively simple to use also
- makes it more difficult to implement (an Eiffel-to-C compiler is
- perhaps 4 to 5 times more difficult to create than a native Pascal
- compiler).
-
- Compiling Eiffel to C seems to work well under Unix. C is sometimes
- thought of as the native code of Unix.
-
- On the other hand, C is not universal on other platforms, and the
- Eiffel purchaser may need to buy a C compiler as well, and possibly
- replace it if the supported C compilers change with new versions of
- the Eiffel compiler.
-
- With a native-code compiler, you'd get somewhat better throughput and
- the potential for smaller executables and slightly better performance.
- You'd also get a higher price and an even longer wait for Eiffel to
- show up on other than the leading market share machines.
-
- ----------
-
- L01) What features does Eiffel have?
-
- Eiffel is a pure object-oriented language. Its modularity is based on
- classes. It stresses reliability, and facilitates design by contract.
- It brings design and programming closer together. It encourages the
- re-use of software components.
-
- Eiffel offers classes, multiple inheritance, polymorphism, static
- typing and dynamic binding, genericity (constrained and
- unconstrained), a disciplined exception mechanism, systematic use of
- assertions to promote programming by contract, and deferred classes
- for high-level design and analysis.
-
- Eiffel has an elegant design and programming style, and is easy to
- learn.
-
- An overview is available at
- http://www.eiffel.com/doc/manuals/language/intro/
-
- ----------
-
- L02) What changes have been made to the Eiffel language definition?
-
- Eiffel is still a relatively new language, and there have been a
- number of changes to its definition. Here is a summary of the major
- changes:
-
- 1. Changes between the publication of "Object-Oriented Software
- Construction" in 1988, and the release of Eiffel 2.3:
-
- - Constrained genericity enables a generic class to restrict its
- generic parameters to the descendants of a given class
-
- - The "indexing" clause allows information about a class to be
- recorded for extraction by archival, browsing and query tools
-
- - The assignment attempt operator "?=" provides a way to make
- type-safe assignments going against the inheritance hierarchy
-
- - User-defined infix and prefix operator features
-
- - Expanded types support composite objects without dynamic
- allocation, and with value semantics
-
- - The "obsolete" clause for smooth library evolution
-
- - The "unique" keyword for implicitly-assigned integer codes
-
- - The multi-branch instruction (similar to a case statement)
-
- - The boolean operator for implication ("implies")
-
- 2. Changes with the introduction of Eiffel Version 3:
-
- - The feature adaptation subclause must now be terminated with
- "end"
-
- - Semicolons as instruction separators are optional
-
- - Groups of features are bracketed by a feature clause. All
- features are exported unless the feature clause specifies a
- restriction. The repeat subclause is no longer needed, because
- inherited features keep the original export status they had in
- the parent unless they are redefined, or are the subject of an
- export subclause in the feature adaptation clause.
-
- - Preconditions can only be replaced by weaker ones, postconditions
- can only be replaced by stronger ones. This is now enforced by
- the language through the use of "require else" in preconditions
- and "ensure then" in postconditions.
-
- - Ambiguities in repeated inheritance are resolved by a "select"
- clause.
-
- - A feature can no longer be replicated and redefined in the same
- feature adaptation clause, however the same effect can be
- achieved through repeated inheritance
-
- - Two or more features may be defined at the same time (e.g. "f1,
- f2 is...").
-
- - The keyword "frozen" before a feature name prohibits redefinition
- of the feature in descendants
-
- - In an anchored declaration, the anchor may now also be a formal
- argument of the enclosing routine
-
- - A class may have zero, one or more creation procedures,
- designated with the "creation" keyword. A new creation syntax
- using the "!!" symbol allows the appropriate creation procedure
- to be specified. It is also possible to directly create an object
- of any type which conforms to the entity to which it is being
- attached.
-
- - The meaning of dot notation has been made more uniform, and
- alternative constructs have been provided for the special
- language-defined features that previously used dot notation:
- x.Create is now !! x
- y.Clone(x) is now y := clone(x)
- x.Forget is now x := Void
- x.Void is now x = Void
- x.Equal(y) is now equal(x, y)
-
- - Manifest arrays can be specified, for example
- <<"Jan", "Feb", "Mar">>
- which also provides a way to pass a variable number of arguments
- to a routine.
-
- - The command-line parameters are made available to the creation
- procedure of the root class as an array of strings.
-
- - A default rescue procedure called default_rescue may be defined
- and inherited.
-
- - A class may be declared to be an expanded class, in which case
- any type based on that class will be expanded.
-
- - An object may no longer contain a reference to an expanded object
- that is a sub-object of another object. Instead, upon assignment
- of an expanded object to a non-expanded object, the expanded
- object will be cloned, and a reference to the newly-cloned object
- will be stored in the non-expanded object.
-
- - The operator "div" has been replaced by "//", and the operator
- "mod" has been replaced by "\\".
-
- 3. Changes between first and second printings of "Eiffel: The Language"
-
- - New basic types INTEGER_REF, REAL_REF, CHARACTER_REF and
- BOOLEAN_REF etc have been introduced to provide non-expanded
- basic types.
-
- - Introduction of the POINTER type to enable external references to
- be passed around in Eiffel programs.
-
- - Calls from Eiffel to external routines no longer implicitly pass
- the current object as the first parameter.
-
- There are many other (more minor) changes, which Neil Wilson has
- summarized in ftp.cm.cf.ac.uk:/pub/eiffel/Docs in both Microsoft
- Rich Text Format and ASCII.
-
- ----------
-
- L03) What libraries come with Eiffel?
-
- All vendors aim to support the Eiffel Library Standard kernel classes.
-
- In addition, extensive library classes are supplied with the compilers
- including data structures, graphics, lexical analysis and parsing, IO,
- persistence, formatting and more.
-
- Contact the vendors for further details.
-
- ----------
-
- L04) What's the big deal about preconditions and postconditions?
-
- The big deal is that it supports programming by contract. For example,
- preconditions (require clauses) are simple boolean statements that are
- used to check that the input arguments are valid and that the object
- is in a reasonable state to do the requested operation. If not, an
- exception is generated. Similarly, postconditions (ensure clauses)
- make sure that a method has successfully performed its duties, thus
- "fulfilling its contract" with the caller. Invariants are boolean
- expressions that are checked every time an object method returns back
- to a separate object.
-
- You can use these ideas in any OO programming language, but usually
- must supply your own assertion mechanisms or rely on programmer
- discipline. In Eiffel, the ideas are integrated into the whole fabric
- of the environment. We find them used by:
-
- -- the exception handling mechanism.
- (Tracebacks almost always identify the correct culprit code since
- preconditions almost always denote an error in the calling method,
- while postconditions denote an error in the called method.)
-
- -- the automatic compilation system.
- (Assertions can be disabled entirely or selectively by type on a
- per class basis.)
-
- -- the Eiffel compiler
- (Invariants, preconditions and postconditions are all inherited in
- a manner that makes logical sense.)
- (Assertion expressions are not allowed to produce side effects so
- they can be omitted without effect.)
-
- -- the automatic documentation tools
- (Preconditions and postconditions are important statements about
- what a method does, often effectively describing the "contract"
- between the caller and callee. Invariants can yield information
- about legal states an object can have.)
-
- In the future we expect to see formal methods technology work its way
- into the assertion capability. This will allow progressively more
- powerful constraints to be put into place. In addition, if a
- conjecture by Dr. Meyer bears fruit, the notion of preconditions may
- be extended into an important mechanism for the development of
- parallel programming.
-
- ----------
-
- L05) Please explain and discuss covariance vs. contravariance.
-
- Consider the following situation: we have two classes PARENT and
- CHILD. CHILD inherits from PARENT, and redefines PARENT's feature
- 'foo'.
-
- class PARENT
- feature
- foo (arg: A) is ...
- end
-
- class CHILD
- inherit
- PARENT redefine foo end
- feature
- foo (arg: B) is ...
- end
-
- The question is: what restrictions are placed on the type of argument
- to 'foo', that is 'A' and 'B'? (If they are the same, there is no
- problem.)
-
- Here are two possibilities:
-
- (1) B must be a child of A (the covariant rule - so named because
- in the child class the types of arguments in redefined
- routines are children of types in the parent's routine, so the
- inheritance "varies" for both in the same direction)
-
- (2) B must be a parent of A (the contravariant rule)
-
- Eiffel uses the covariant rule.
-
- At first, the contravariant rule seems theoretically appealing. Recall
- that polymorphism means that an attribute can hold not only objects of
- its declared type, but also of any descendant (child) type. Dynamic
- binding means that a feature call on an attribute will trigger the
- corresponding feature call for the *actual* type of the object, which
- may be a descendant of the declared type of the attribute. With
- contravariance, we can assign an object of descendant type to an
- attribute, and all feature calls will still work because the
- descendant can cope with feature arguments at least as general as
- those of the ancestor. In fact, the descendant object is in every way
- also a fully-valid instance of the ancestor object: we are using
- inheritance to implement subtyping.
-
- However, in programming real-world applications we frequently need to
- specialize related classes jointly.
-
- Here is an example, where PLOT_3D inherits from PLOT, and
- DATA_SAMPLE_3D inherits from DATA_SAMPLE.
-
- class PLOT
- feature
- add(arg: DATA_SAMPLE) is ...
-
- class PLOT_3D
- inherit
- PLOT redefine add end
- feature
- add(arg: DATA_SAMPLE_3D) is ...
-
- This requires the covariant rule, and works well in Eiffel.
-
- It would fail if we were to put a PLOT_3D object into a PLOT attribute
- and try to add a DATA_SAMPLE to it. It fails because we have used
- inheritance to implement code re-use rather than subtyping, but have
- called a feature of the ancestor class on an object of the descendant
- class as if the descendant object were a true subtype. It is the
- compiler's job to detect and reject this error, to avoid the
- possibility of a run-time type error.
-
- Here's another example where a real-world situation suggests a
- covariant solution. Herbivores eat plants. Cows are herbivores. Grass
- is a plant. Cows eat grass but not other plants.
-
- class HERBIVORE class PLANT
- feature
- eat(food: PLANT) is ...
- diet: LIST[PLANT]
-
- class COW class GRASS
- inherit inherit
- HERBIVORE PLANT
- redefine eat
- end
- feature eat(food: GRASS) is ...
-
- This does what we want. The compiler must stop us from putting a COW
- object into a HERBIVORE attribute and trying to feed it a PLANT, but
- we shouldn't be trying to do this anyway.
-
- Also consider the container 'diet'. We are not forced to redefine this
- feature in descendant classes, because with covariant redefinition of
- the argument to 'eat', the feature 'diet' can always contain any
- object that can be eaten (e.g. grass for a cow). (With contravariant
- redefinition of the argument to 'eat', it would be necessary to
- re-open the parent class to make the type of the container 'diet' more
- general).
-
- To summarise: Real-world problems often lend themselves to covariant
- solutions. Eiffel handles these well. Incorrect programs in the
- presence of covariant argument redefinition can cause run-time type
- errors unless the compiler catches these.
-
- Sather uses the contravariant rule, but uses separate mechanisms for
- subtyping and code reuse and only allows dynamic binding on true
- subtypes. This seems to make contravariance work well, but it can
- force the Sather programmer to use concrete types when modelling
- covariant problems. Concrete types cannot be further subtyped in
- Sather, so this can reduce the potential for re-use (in Eiffel, any
- type can be further subtyped, but the compiler must check that it is
- used validly).
-
- ----------
-
- L06) Is it true that there are "holes" in the Eiffel type system?
-
- No. The design of Eiffel makes it possible to catch all type errors at
- compile time, so that an Eiffel program cannot abort with a run time
- type error.
-
- However, to catch a class of certain more obscure type errors at
- compile time, the compiler must analyse the way that classes interact
- within the entire system, rather than just looking at each class one
- by one.
-
- There is a proposal underway that, if accepted, will allow compilers
- to check this class of errors by looking at classes and not at the
- whole system.
-
- Because system-wide compile-time validity checking can be complex,
- some compilers insert run-time traps for these errors instead, and
- some may fail to correctly trap these errors. Ask your Eiffel compiler
- vendor how they handle these type problems.
-
- ----------
-
- L07) Is there support for concurrency in Eiffel?
-
- Eiffel does not yet support concurrency; neither do current commercial
- compilers. However, work on concurrency for Eiffel is a hot research
- topic.
-
- For four articles on concurrency facilities for Eiffel, including
- Bertrand Meyer's article "Systematic Concurrent Object-Oriented
- Programming", see the September 1993 "Communications of the ACM" (Vol.
- 36, Number 9).
-
- At least one of these articles can also be obtained from ISE's WWW
- site (http://www.eiffel.com).
-
- ----------
-
- L08) Why doesn't Eiffel allow function overloading?
-
- In Eiffel, no two features of a class may have the same identifier,
- regardless of their respective signatures. This prevents the use of
- function overloading ("multiple polymorphism"), a common programming
- technique in languages like C++.
-
- Eiffel is designed to be minimal: it includes exactly the features
- that its designer considered necessary, and nothing else.
-
- Because Eiffel already supports (single) polymorphism through its
- inheritance system, the only positive thing that function overloading
- buys you is reducing the number of feature names you have to learn.
- This is at the expense of reducing the ability of the compiler to trap
- mistakes (often type errors).
-
- Readability is also enhanced when overloading is not possible. With
- overloading you would need to consider the type of the arguments as
- well as the type of the target before you can work out which feature
- is called. With multiple inheritance and dynamic binding this is
- awkward for a compiler and error-prone for a human. There is no
- intuitive rule which could be used to disambiguate routine calls where
- there is no "nearest" routine.
-
- However, in Eiffel it's easy to write one routine with arguments of
- the most general applicable type, then use the assignment attempt
- operator to carry out the appropriate operation according to the
- run-time type of the arguments (thereby explicitly programming the
- disambiguation "rules").
-
- Having said that, the lack of multiple polymorphism does force us to
- write some common mathematical operations (e.g. matrix math) in an
- awkward way, and forces arithmetic expressions to be treated specially
- (the "arithmetic balancing rule", ETL p385). But no-one has come up
- with a solution which is so simple, elegant and useful that it
- improves the quality of Eiffel as a whole.
-
- ----------
-
- L09) Why are there no procedural types in Eiffel?
-
- The notion of allowing a routine to be passed as an argument to a
- routine is in many people's view incompatible with the OO method. The
- definition of object-orientation implies that every operation belongs
- to an object type, so one does not manipulate routines just by
- themselves.
-
- A possible technique when one feels the need to use a routine argument
- is to write a class and include the routine in it. Then (rather than
- passing a routine argument) pass an object - an instance of this class
- - to which the routine can then be applied. This is a more flexible
- approach in the long term. For example, you may later add an "undo"
- routine to your routine - containing class, or an attribute such as
- "time of last execution".
-
- ----------
-
- L10) Why are there no class attributes in Eiffel?
-
- In Eiffel, the "once" function provides greater functionality in a
- more disciplined way. The body of a "once" function is executed once
- only, when it is first called. Thereafter, the "once" function returns
- the same Result without re-executing its body.
-
- The "once" function can therefore be used to implement a shared
- attribute of reference type (initialized on its first use).
-
- A "once" function can be included in a mixin class. The shared
- attribute returned by that once function is then available to all
- instances of classes which inherit from the mixin class.
-
- ----------
-
- L11) How can I call the parent-class version of a redefined routine?
-
- When an inherited routine is redefined in a child class, is there a
- way for the redefined routine to call the version in the parent class?
-
- 1) If you are responsible for the design of the parent class, you may
- anticipate such a need. You may provide multiple versions of the
- same routine body, with some versions frozen (not redefinable):
-
- class PARENT
- feature foo, frozen parent_foo is
- do
- ...
- end
- end
-
- class CHILD
- inherit
- PARENT
- redefine foo
- end
- feature foo is
- do
- parent_foo
- ...
- end
- end
-
- 2) Otherwise, you use repeated inheritance to get two versions of
- 'foo', and redefine one of them:
-
- class PARENT
- feature foo is
- do
- ...
- end
- end
-
- class CHILD
- inherit
- PARENT
- rename foo as parent_foo
- end
- PARENT
- redefine foo
- select foo -- (in case of dynamic binding)
- end
- feature
- foo is
- do
- parent_foo
- ...
- end
- end
-
- ----------
-
- L12) Where can I find a comparison between Eiffel and C++?
-
- In Richard Wiener's book "Software Development Using Eiffel: There can
- be life after C++" (Prentice-Hall, ISBN 0-13-100686-X).
-
- ----------
-
- L13) Are there any destructors in Eiffel?
-
- Eiffel objects are garbage-collected, so that there is no need for the
- software developer to worry about whether, how and when to "destruct"
- or "free" them in the software text.
-
- Some implementations offer a "free" procedure for programmers who
- absolutely want to remove an object manually. Such a procedure is "use
- at your own risk" and is not needed in normal Eiffel development.
-
- Coming back to normal usage, the need may arise to ensure that certain
- operations will automatically take place whenever the garbage
- collector reclaims an object. For example if an Eiffel object
- describing a file becomes unreachable and hence is eventually
- garbage-collected, you may want to ensure that the physical file will
- be closed at that time. Some implementations of Eiffel provide a
- mechanism for that purpose: procedure 'dispose' from the Kernel
- Library class MEMORY.
-
- Whenever the garbage collector collects an object, it calls 'dispose'
- on that object. The procedure does nothing by default (so that a smart
- GC will of course avoid executing any actual call). But any class may
- inherit from MEMORY and redefine 'dispose' to perform appropriate
- actions, such as closing a file. Such actions are sometimes called
- "finalization". This technique achieves it conveniently.
-
- Because there is no guarantee as to the order in which the garbage
- collector will reclaim objects that have become unreachable, safe
- redefinitions of 'dispose' should only act on external resources such
- as file descriptors, database elements, window system resources etc,
- not on Eiffel object structures themselves.
-